//package com.wnhoo.smartfishtank.ui;
//
//import android.content.Context;
//import android.content.res.Resources;
//import android.util.AttributeSet;
//import android.view.MotionEvent;
//import android.view.View;
//import android.widget.ImageView;
//import android.widget.RelativeLayout;
//
//import com.wnhoo.smartfishtank.R;
//import com.wnhoo.smartfishtank.util.MyLog;
//
//
///**
// * Created by kevinwen on 2014/11/10.
// * Copyright (c) 2014/11/10.KevinWen. All rights reserved.
// */
//public class SwitchLevelThreeHorizontal extends RelativeLayout implements View.OnTouchListener{
//
//    private static final String tag = "SwitchLevelThreeHorizontal";
//    private Context context;
//    private OnLeveSwitchListener listener;
//
//    //    //X*2是dp转px的算法
////    private static final int D_DEFUALT_WIDTH = 200;//DigSwitch的宽度
////    private static final int D_DEFUALT_HEIGHT = 35;//DigSwitch的高度
////
////    //D_D_THUMB_WIDTH
////    private static final int D_THUMB_WIDTH = 35;//thumb按钮的宽度
////    private static final int D_THUMB_HEIGHT = 35;//thumb按钮的高度
////    private static final int D_THUMB_MARGIN_LEFT = -3;//thumb按钮顶部 和 DigSwitch顶部的距离
////X轴坐标不变,计算D_TOP_THUMB要考虑到居中,如果没有居中,D_TOP_THUMB就是为0
////private static final int D_TOP_THUMB = (D_DEFUALT_HEIGHT - D_THUMB_HEIGHT)/2;//16,148
////    private static final int D_BOTTOM_THUMB = D_TOP_THUMB + D_THUMB_HEIGHT;
////
////    private static final int POINT_2_D = 10;//按照平分没有达到效果，所以要设置第二个中点的偏移量
////
//    private static  int D_DEFUALT_WIDTH ;//DigSwitch的宽度
//    private static  int D_DEFUALT_HEIGHT ;//DigSwitch的高度
//
//    //D_D_THUMB_WIDTH
//    private static  int D_THUMB_WIDTH ;//thumb按钮的宽度
//    private static  int D_THUMB_HEIGHT ;//thumb按钮的高度
//    private static  int D_THUMB_MARGIN_LEFT ;//thumb按钮顶部 和 DigSwitch顶部的距离
//    private static  int D_LEFT_MINI ;//thumb滑到最左边的位置
//    private static  int D_RIGHT_MAX ; //thumb滑到最右边的位置
//
//    //X轴坐标不变,计算D_TOP_THUMB要考虑到居中,如果没有居中,D_TOP_THUMB就是为0
//    private static  int D_TOP_THUMB ;//16,148
//    private static  int D_BOTTOM_THUMB ;
//
//    private static  int POINT_2_D ;//按照平分没有达到效果，所以要设置第二个中点的偏移量
//
//    private int lastX;
//
//    private int leve = 2;//default
//    private ImageView image_view_thumb;
//
//    public void initDimens(){
//        Resources res = getResources();
//
//        D_DEFUALT_WIDTH = res.getDimensionPixelSize(R.dimen.digswitch_level_width);//DigSwitch的宽度
//        D_DEFUALT_HEIGHT = res.getDimensionPixelSize(R.dimen.digswitch_level_height);//DigSwitch的高度
//
//        //D_D_THUMB_WIDTH
//        D_THUMB_WIDTH = res.getDimensionPixelSize(R.dimen.digswitch_level_thumb_width);//thumb按钮的宽度
//        D_THUMB_HEIGHT = res.getDimensionPixelSize(R.dimen.digswitch_level_thumb_height);//thumb按钮的高度
//        D_THUMB_MARGIN_LEFT = - res.getDimensionPixelSize(R.dimen.digswitch_level_thumb_margin_left);//thumb按钮顶部 和 DigSwitch顶部的距离
//
//        D_LEFT_MINI = D_THUMB_MARGIN_LEFT;//thumb滑到最左边的位置
//        D_RIGHT_MAX = D_DEFUALT_WIDTH ; //thumb滑到最右边的位置
//
//        //X轴坐标不变,计算D_TOP_THUMB要考虑到居中,如果没有居中,D_TOP_THUMB就是为0
//        D_TOP_THUMB = (D_DEFUALT_HEIGHT - D_THUMB_HEIGHT)/2;//16,148
//        D_BOTTOM_THUMB = D_TOP_THUMB + D_THUMB_HEIGHT;
//
//        POINT_2_D = res.getDimensionPixelSize(R.dimen.digswitch_level_POINT_2_D);//按照平分没有达到效果，所以要设置第二个中点的偏移量
//    }
//
//    public void initView(){
//
//        listener = null;
//
//
////		LayoutParams p_wrap = new LayoutParams(-2, RelativeLayout.LayoutParams.WRAP_CONTENT);
////		p_wrap.addRule(RelativeLayout.CENTER_IN_PARENT);
//
//        LayoutParams params_bg = new LayoutParams(D_DEFUALT_WIDTH, D_DEFUALT_HEIGHT);
//
//        ImageView image_view_bg = new ImageView(context);
//        image_view_bg.setLayoutParams(params_bg);
//        image_view_bg.setBackgroundResource(R.drawable.uiswitch_bg_green1);
//        this.addView(image_view_bg);
//
//        LayoutParams params_thumb = new LayoutParams(D_THUMB_WIDTH, D_THUMB_HEIGHT);
//        params_thumb.addRule(RelativeLayout.CENTER_VERTICAL);
//        params_thumb.setMargins(D_THUMB_MARGIN_LEFT, 0, 0, 0);
//
//        image_view_thumb = new ImageView(context);
//        image_view_thumb.setLayoutParams(params_thumb);
//        image_view_thumb.setBackgroundResource(R.drawable.uiswitch_thumb);
//        this.addView(image_view_thumb);
//
//        image_view_thumb.setOnTouchListener(this);
//        image_view_thumb.setFocusable(true);
//        image_view_thumb.setClickable(true);
//        image_view_thumb.setLongClickable(true);
//
//        MyLog.s(tag, "InitView...  ");
//    }
//
//    /**
//     * 监听Switch拖动时的状态变化，setLeve1不会触发回调
//     * @param l
//     */
//    public void setLeveSwitchListener(OnLeveSwitchListener l){
//
//        this.listener = l;
//    }
//
//
//
//    @Override
//    public boolean onTouch(View v, MotionEvent event) {
//        // TODO Auto-generated method stub
//
//        int action = event.getAction();
//
//        //MyLog.s(tag,"D_TOP_THUMB="+D_TOP_THUMB);//16,148
//        //MyLog.s(tag,"D_BOTTOM_THUMB="+D_BOTTOM_THUMB);
//        switch(action){
//            case MotionEvent.ACTION_DOWN:
//
//                lastX = (int) event.getRawX();  //getRawX()相对屏幕的位置;getX()获得view的触摸位置坐标
//                break;
//            case MotionEvent.ACTION_MOVE:
//
//                int dy =(int)event.getRawX() - lastX;
//
//                int left = v.getLeft() + dy;
//                int right = v.getRight() + dy;
//                if(right > D_RIGHT_MAX){
//                    //不能超出右边
//                    right = D_RIGHT_MAX;
//                    left = right - D_THUMB_WIDTH;
//                }
//                if(left < D_LEFT_MINI){
//                    //不能超出左边
//                    left = D_LEFT_MINI;
//                    right = D_LEFT_MINI + D_THUMB_WIDTH;
//                }
//                //MyLog.s(tag,"left="+left);
//                //MyLog.s(tag,"right="+right);
//                v.layout(left, D_TOP_THUMB, right, D_BOTTOM_THUMB);
//                lastX = (int) event.getRawX();
//
//                break;
//            case MotionEvent.ACTION_UP:
//
//
//                //判断靠近哪一边，就往那一边走。
//                int left_up = v.getLeft();
//                int point1 =  D_DEFUALT_WIDTH/4 - D_THUMB_WIDTH/2;
//                int point2 =  D_DEFUALT_WIDTH*3/4 - D_THUMB_WIDTH/2 - POINT_2_D;
//
//                if(left_up < point1){
//                    //靠近第一个点
//                    point1Handler(v);
//                }else if(left_up > point1&&left_up< point2){
//                    //靠近第二个点
//                    point2Handler(v);
//                }else{
//                    //靠近第三个点
//                    point3Handler(v);
//                }
////                v.layout(left, D_TOP_THUMB, right, D_BOTTOM_THUMB);
//                lastX = (int) event.getRawX();
//                break;
//        }
//        return false;
//    }
//
//    /**
//     * 滑到第三个点的处理函数
//     * @param v
//     */
//    public void point3Handler(View v){
//        if(this.leve!=3){
//            //状态变化，触发onSwitchOff
//            setLeve(3,v);
//
//        } else {
//            //状态没有变化，只是还原thumb的位置
//            int right = D_RIGHT_MAX;
//            int left = right - D_THUMB_WIDTH;
//            v.layout(left, D_TOP_THUMB, right, D_BOTTOM_THUMB);
//        }
//    }
//
//    /**
//     * 滑到第二个点的处理函数
//     * @param v
//     */
//    public void point2Handler(View v){
//        if(this.leve!=2){
//
//            //状态变化，触发onSwitchOff
//            setLeve(2,v);
//
//        } else {
//            int left = D_DEFUALT_WIDTH / 2 - D_THUMB_WIDTH / 2 - POINT_2_D;
//            int right = left + D_THUMB_WIDTH;
//            v.layout(left, D_TOP_THUMB, right, D_BOTTOM_THUMB);
//        }
//    }
//
//    /**
//     * 滑到第一个点的处理函数
//     * @param v
//     */
//    public void point1Handler(View v){
//
//        if(this.leve!=1){
//            //状态变化，触发onSwitchOn
//            setLeve(1,v);
//
//        }
//        else {
//            //状态没有变化，只是还原thumb在左边的位置
//            int left = D_LEFT_MINI;
//            int right = D_LEFT_MINI + D_THUMB_WIDTH;
//            v.layout(left, D_TOP_THUMB, right, D_BOTTOM_THUMB);
//        }
//    }
//
//
//    /**
//     * 本类内部使用设置Leve，默认是Leve = 1
//     * 会触发OnLeveSwitchListener
//     *
//     * @param leve_value
//     */
//    private void setLeve(int leve_value,View view){
//
//        //如果是外部调用，这里打印Log会使View无法更新，暂时不知道怎么解决
//        //MyLog.s(tag,"setLeve1  "+leve_value);
//        int right;
//        int left;
//        switch (leve_value){
//            case 2:
//                this.leve = 2;
//
//                left = D_DEFUALT_WIDTH / 2 - D_THUMB_WIDTH / 2 - POINT_2_D;
//                right = left + D_THUMB_WIDTH;
//                if(listener!=null)this.listener.onSwitchTwo();
//                break;
//            case 3:
//                this.leve = 3;
//                right = D_RIGHT_MAX;
//                left = right - D_THUMB_WIDTH;
//                if(listener!=null)this.listener.onSwitchThree();
//                break;
//            default:
//                //default 1
//                this.leve = 1;
//                left = D_LEFT_MINI;
//                right = D_LEFT_MINI + D_THUMB_WIDTH;
//                if(listener!=null)this.listener.onSwitchOne();
//                break;
//        }
//        //MyLog.s(tag,"setDigSwitchOff getLeft="+image_view_thumb.getLeft());
//        view.layout(left, D_TOP_THUMB, right, D_BOTTOM_THUMB);
////        image_view_thumb.requestLayout();
////        MyLog.s(tag,"left =  "  +left);
////        MyLog.s(tag,"right =  " + right);
//    }
//
//    /**
//     * 开放给外部调用的设置Leve的方法(注：外部使用layout(left, D_TOP_THUMB, right, D_BOTTOM_THUMB);会失效)
//     * 不会触发OnLeveSwitchListener
//     *
//     * @param leve_value
//     */
//    public void setLeve(int leve_value) {
//
//        int right;
//        int left;
//        switch (leve_value){
//            case 2:
//                this.leve = 2;
//
//                left = D_DEFUALT_WIDTH / 2 - D_THUMB_WIDTH / 2 - POINT_2_D;
//                right = left + D_THUMB_WIDTH;
//                break;
//            case 3:
//                this.leve = 3;
//                right = D_RIGHT_MAX;
//                left = right - D_THUMB_WIDTH;
//                break;
//            default:
//                //default 1
//                this.leve = 1;
//                left = D_LEFT_MINI;
//                right = D_LEFT_MINI + D_THUMB_WIDTH;
//                break;
//        }
//        LayoutParams params_thumb = new LayoutParams(D_THUMB_WIDTH, D_THUMB_HEIGHT);
//        params_thumb.addRule(RelativeLayout.CENTER_VERTICAL);
//        params_thumb.setMargins(left, 0, 0 ,0);
//        image_view_thumb.setLayoutParams(params_thumb);
//    }
//
//    /**
//     * 返回当前Leve的值｛1，2，3｝
//     * @return int leve
//     */
//    public int getLeve(){
//
//        return this.leve;
//    }
//
//    /**
//     * @param context
//     * @param attrs
//     * @param defStyle
//     */
//    public SwitchLevelThreeHorizontal(Context context, AttributeSet attrs, int defStyle) {
//        super(context, attrs, defStyle);
//        // TODO Auto-generated constructor stub
//
//        this.context = context;
//        initDimens();
//        initView();
//    }
//
//    /**
//     * @param context
//     * @param attrs
//     */
//    public SwitchLevelThreeHorizontal(Context context, AttributeSet attrs) {
//        super(context, attrs);
//        // TODO Auto-generated constructor stub
//
//        this.context = context;
//        initDimens();
//        initView();
//    }
//
//    /**
//     * @param context
//     */
//    public SwitchLevelThreeHorizontal(Context context) {
//        super(context);
//        // TODO Auto-generated constructor stub
//
//        this.context = context;
//        initDimens();
//        initView();
//    }
//
//    public interface OnLeveSwitchListener{
//
//        public void onSwitchOne();
//        public void onSwitchTwo();
//        public void onSwitchThree();
//    };
//}
